001 /*
002 * Created by IntelliJ IDEA.
003 * User: Wei Wang
004 * Date: 4-Sep-2002
005 * Time: 1:44:25 PM
006 * To change template for new class use
007 * Code Style | Class Templates options (Tools | IDE Options).
008 */
009 package EVolve.util.unifyutils;
010
011 import EVolve.visualization.*;
012 import java.util.*;
013 import EVolve.Scene;
014 import EVolve.exceptions.NoDataPlotException;
015
016 public class UnifiedVisualization {
017 private ArrayList viz;
018 private int dimension;
019 private HashSet fullEntitySet;
020
021 public UnifiedVisualization(int dimension) {
022 this.dimension = dimension;
023 viz = new ArrayList();
024 fullEntitySet = new HashSet();
025 }
026
027 public boolean exists(Visualization visual) {
028 boolean retValue = false;
029 for (int i=0;i<viz.size();i++) {
030 if (((Visualization)viz.get(i)).getVisualizationID() == visual.getVisualizationID()) {
031 retValue = true;
032 }
033 }
034 return retValue;
035 }
036
037 public void addVisualization(Visualization [] visuals) {
038
039 for (int i=0;i<visuals.length;i++) {
040 if (exists(visuals[i])) continue;
041 viz.add(viz.size(),visuals[i]);
042 }
043 }
044
045 public void visualize() {
046 ArrayList tobeViz = new ArrayList();
047 fullEntitySet.clear();
048
049 for (int i=0; i<viz.size(); i++) {
050 Visualization visual = (Visualization)viz.get(i);
051 AutoImage image = visual.getImage();
052 if (image == null)
053 tobeViz.add(visual);
054 }
055
056 if (tobeViz.size() != 0) {
057 Scene.getVisualizationManager().prepareForLinkedViz(tobeViz,0);
058 Scene.visualize();
059 }
060
061 Unification.getUnifiedEntity(fullEntitySet,viz,dimension);
062
063 for (int i = 0; i< viz.size(); i++) {
064 Visualization visual = (Visualization)viz.get(i);
065 ReferenceDimension dim = visual.getLinkableDimension(dimension);
066 dim.linkEntities(fullEntitySet);
067 try {
068 dim.visualize();
069 } catch (NoDataPlotException e) {
070 Scene.showErrorMessage(e.getMessage());
071 }
072 }
073
074 for (int i=0; i<viz.size(); i++) {
075 ((Visualization)viz.get(i)).visualize();
076 }
077 }
078
079 public int unregisterViz(Visualization visual) {
080 int delCount = 0;
081 for (int i=0;i<viz.size();i++) {
082 if (((Visualization)viz.get(i-delCount)).getVisualizationID() == visual.getVisualizationID()) {
083 viz.remove(i-delCount);
084 delCount++;
085 }
086 }
087 if (viz.size() == 1) viz.clear();
088
089 return viz.size();
090 }
091
092 }